"""
序列之列表介绍（列表也是一种容器）
"""

# 1. 列表的声明方式1
l = []
print(type(l))

# 2. 列表的声明方式2
list1 = list()
print(type(list1))
# 另：数据类型也可以通过此格式来获取默认值
s = str()
print(s)
print(type(s))
i = int()
print(i)
print(type(i))
f = float()
print(f)
print(type(f))

# 3. 声明并初始化
l1 = [2, 3, 4, 5, 5, 3, 2, '43434', []]
print(l1)
print(type(l1))
# 列表中元素的个数和值都相同，但是由于元素之间的顺序不同，导致内存地址不同。而且元素值可以重复。侧面说明列表是序列
l2 = [3, 2, 4, 5, 5, 3, 2, '43434', []]
print(id(l1))
print(id(l2))

# 4. 列表的序列操作（可以和字符串对比参考）
# 索引
l_ = l2[0]
print(l_)
l_1 = l2[-2]
l_2 = l2[len(l2) - 2]
print(l_1)
print(l_2)
# 切片操作
l_3 = l2[:]
print(l2)
print(l_3)
l_4 = l2[1:]
print(l2)
print(l_4)
l_5 = l2[:len(l2) - 1]
print(l2)
print(l_5)
l_6 = l2[: - 1]
print(l2)
print(l_6)
# 设置步长的切片
l_7 = l2[::2]
print(l2)
print(l_7)
l_8 = l2[::-2]
print(l2)
print(l_8)
l_9 = l2[1:7:2]
print(l2)
print(l_9)
l_10 = l2[7:1:-2]
print(l2)
print(l_10)

# 5. 通过索引修改数据
l3 = [3, 2, 4, 5, 5, 3, 2, '43434', []]
l3[1] = 55
print(l3)
# 字符串虽然也有索引，但是不支持修改
s1 = "233234454545"
# 通过如下方式修改字符串内容将报错
# s1[1] = '2'

# 6. + 连接操作
l4 = [3, 2, 4, []]
l5 = [5, 3, 2, '43434', []]
print(l4 + l5)

# 7. * 获取重复操作
l_11 = l4 * 3
print(l_11)

# 7. len 获取长度
print(len(l4))

# 8. in 判断指定值是否在某个列表中
print(3 in l4)
print(5 in l4)
